#include "main.h"

const uint8_t table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};

void send_byte(uint8_t byte)
{
	uint8_t i,num;
	num = byte;
	for(i=0;i<8;i++)
	{
		GPIO_WriteLow(HC164_PORT,HC164_CLK);
		if(num&0x01) {
			GPIO_WriteHigh(HC164_PORT,HC164_DATA);
		}
		else{
			GPIO_WriteLow(HC164_PORT,HC164_DATA);
		}
		GPIO_WriteHigh(HC164_PORT,HC164_CLK);
		num = num>>1;
	}
}

void send_num(uint8_t byte)
{
	uint8_t i,num;
	num = table[byte];
	for(i=0;i<8;i++)
	{
		GPIO_WriteLow(HC164_PORT,HC164_CLK);
		if(num&0x01) {
			GPIO_WriteHigh(HC164_PORT,HC164_DATA);
		}
		else{
			GPIO_WriteLow(HC164_PORT,HC164_DATA);
		}
		GPIO_WriteHigh(HC164_PORT,HC164_CLK);
		num = num>>1;
	}
}


void send_num_dp(uint8_t byte)
{
	uint8_t i,num;
	num = table[byte]|0x01;
	for(i=0;i<8;i++)
	{
		GPIO_WriteLow(HC164_PORT,HC164_CLK);
		if(num&0x01) {
			GPIO_WriteHigh(HC164_PORT,HC164_DATA);
		}
		else{
			GPIO_WriteLow(HC164_PORT,HC164_DATA);
		}
		GPIO_WriteHigh(HC164_PORT,HC164_CLK);
		num = num>>1;
	}
}

// init pin
void seg_init()
{
	GPIO_Init(SEG_PORT,   SEG_SEL1,   GPIO_MODE_OUT_PP_LOW_FAST);
	GPIO_Init(SEG_PORT,   SEG_SEL2,   GPIO_MODE_OUT_PP_LOW_FAST);
	GPIO_Init(SEG_PORT,   SEG_SEL3,   GPIO_MODE_OUT_PP_LOW_FAST);
	GPIO_Init(HC164_PORT, HC164_CLK,  GPIO_MODE_OUT_PP_LOW_FAST);
	GPIO_Init(HC164_PORT, HC164_DATA, GPIO_MODE_OUT_PP_LOW_FAST);
}